package com.hulk.rpc.filter;

import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.FullHttpResponse;

/**
 * @author xuxukang
 * @date 2019-04-16 22:22
 */
public interface RestServerFilter extends ServerFilter {

  String SERVER_FILTER_DENY = "rest server filter deny this request";

  /**
   * @param request 请求，不为空
   * @return true，接受请求；false，拒绝请求
   */
  boolean onReceive(FullHttpRequest request);

  /**
   * @param request  请求，不为空
   * @param response 返回结果，不为空
   */
  void onSend(FullHttpRequest request, FullHttpResponse response);

  /**
   * @param request   请求，可能为空
   * @param response  返回结果，可能为空
   * @param throwable 异常，不为空
   */
  void onError(FullHttpRequest request, FullHttpResponse response, Throwable throwable);

}
